#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <unistd.h>

//一般函数返回作为操作正常和失败标志。int funtion(char *data)
//返回<0表示错误代码，=0表示成功，>0也表示成功，可能用于返回长度。

#if 1

void voidfunc(void)
{
    printf("it's void function run!\n");
    int tmpval = 1;
    if (tmpval)
    {
        return;
    }
}

// 这是函数的声明。
// 如果函数定义不在此文件，或在调用函数main之后，可以用这个声明。
// 因为addFunction定义在main之后，如果没有声明，编译会出错。
int addFunction(int a, int b);
int main(int argc, char **argv)
{
    // 这里的变量a,b,c与addFunction函数的变量a,b,c，是两个不同的变量。
    int a, b, c;
    a = 5;
    b = 3;
    // 这里是函数的调用。
    // 这里的a，b是实参，和函数定义的a,b是不同的。并且他们的空间位置也不一样。
    // 将返回值存入变量c中。
    c = addFunction(a, b);
    printf("function finish, add value = %d\n", c);

    voidfunc();
    // addFunction(a, b) = 7;
    //因为返回类型是int，因此return 整数;
    return 1;
}
// 这里是函数的定义。
// 返回为int， addFunction为函数名， int a为第一个形参,他有自己的空间， int b为第二个形参,他有自己的空间
// addFunction为了实现求和。
int addFunction(int a, int b)
{
    //这里的变量c与main函数的变量c，是两个不同的变量。
    int c = a + b;
    //因为返回类型是int，因此return 整数;
    return c;
}
#else
// 这里是函数的定义。
int addFunction(int a, int b)
{
    int c = a + b;
    return c;
}
// 因为函数addFunction定义在调用函数main之前，因此不用声明也可以
//  int addFunction(int a, int b);
int main(int argc, char **argv)
{
    int a, b, c;
    a = 5;
    b = 3;
    // 这里是
    c = addFunction(a, b);
    printf("function finish, add value = %d\n", c);
    return 1;
}
#endif